class Solution(object):
    def getSkyline(self, buildings):
        """
        :type buildings: List[List[int]]
        :rtype: List[List[int]]
        """
        import heapq
        events = sorted([(L, -H, R) for L, R, H in buildings] + list({(R, 0, None) for _, R, _ in buildings}))# 按照第一个元素排序
        print(events)
        res, hp = [[0, 0]], [(0, float("inf"))]
        for x, negH, R in events:
            print(x)
            while x >= hp[0][1]:
                # 最小的在第一个
                heapq.heappop(hp)#
            if negH:
                heapq.heappush(hp, (negH, R))
            print(hp)# hq中的第一个元素必是最小的
            if res[-1][1] + hp[0][0]:
                #  如果一样高的话，不加，（5，12，12）没加上的原因是插入的时候插在了(-15,7)后边，即如果没有在前边右节点的右边，那么插入的点都不会在前边点的前面
                res += [x, -hp[0][0]],
                print(res)
        return res[1:]

test = Solution()
print(test.getSkyline([[2,9,10],[3,7,15],[5,12,12],[15,20,10],[19,24,8]]))